////////////////////////////////////////////////////////////////
///
/// File: TmpExpProtecteds
/// Author: Lucio Davide Spano
/// Last update: 27 July 2012
/// Description: Extension class for defining the protected
///              of the TmpExp
/// To do:
/// ------------------------------------------------------------
/// Copyright (c) 2012 Lucio Davide Spano
///                     (lucio.davide.spano@isti.cnr.it)
///
/// The use and distribution terms for this software are
/// contained in the file named license.txt, which can be found
/// in the root of this distribution.
/// By using this software in any fashion, you are agreeing to
/// be bound by the terms of this license.
///
/// You must not remove this notice, or any other, from this
/// software.
/// ------------------------------------------------------------
////////////////////////////////////////////////////////////////

#import "TmpExp.h"
#import "StateChangeHandler.h"
@class TmpExp, ExpEventArgs, Token;
@interface TmpExp()

@property (readwrite) ExecState state;
@property (readwrite, retain) TmpExp *parent;
@property (readwrite) ExpType type;

- (void) raiseOnStateChanged :(TmpExp*) sender :(ExpEventArgs*) args :(Token*) token;
- (void) raiseOnNotAcceptedToken :(SimpleTmpExp*) originalSender :(ExpEventArgs*) args :(Token*) token;
- (void) raiseCompleted :(TmpExp*) sender :(ExpEventArgs*) args :(Token*) token;
- (void) raisePerforming :(TmpExp*) sender :(ExpEventArgs*) args :(Token*) token;
- (void) raiseError :(TmpExp*) sender :(ExpEventArgs*) args :(Token*) token;
- (void) addStateChangeListener :(id<StateChangeHandler>) listener;
- (void) removeStateChangeListener:(id<StateChangeHandler>) listener;

@end
